// 《围棋》作者版权所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 开始：构建arm64&&达尔文&！ios 

package cpu

func osInit() {
	ARM64.HasATOMICS = sysctlEnabled([]byte("hw.optional.armv8_1_atomics\x00"))
	ARM64.HasCRC32 = sysctlEnabled([]byte("hw.optional.armv8_crc32\x00"))

	// 没有硬件。Mac OS 11.0 
	// 上以下功能的可选sysctl值，用于动态检测其支持的状态。假设
	// Apple Silicon M1支持的CPU功能作为最小功能集
	// to all Go程序在darwin/arm64上运行。
	ARM64.HasAES = true
	ARM64.HasPMULL = true
	ARM64.HasSHA1 = true
	ARM64.HasSHA2 = true
}

// go:noescape 
func getsysctlbyname(name []byte) (int32, int32)

func sysctlEnabled(name []byte) bool {
	ret, value := getsysctlbyname(name)
	if ret < 0 {
		return false
	}
	return value > 0
}
